package 多线程;

/**
 * Created By  醉美柳舞之众星捧月
 *
 * @author song
 * @date 2017/11/10 22:45
 */
public class Waiter implements Runnable {
    /**
     * Author song  醉美柳舞之众星捧月
     * Date & Time  2017/11/10 22:45
     * Description  等待类  实现多线程
     */
    private Message message;

    public Waiter(Message message) {
        this.message = message;
    }

    @Override
    public void run() {
        String name = Thread.currentThread().getName();
        synchronized (message) {
            try {
                System.out.println(name + ":线程被等待 时间：" + System.currentTimeMillis());
                message.wait();
                System.out.println("打印等待状态: " + message.getMsg());
                //  持有当前锁的线程被等待 !
                //  开始被等待 ; 直到被唤醒    ;  或者被重写,写一个超时,超过时间就取消等待
                //   一旦被唤醒  , 就会从这里开始继续向下执行
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }


}
